package com.zzyl.controller;

import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.zzyl.base.ResponseResult;
import com.zzyl.dto.ResourceDto;
import com.zzyl.service.ResourceService;
import com.zzyl.vo.ResourceVo;
import com.zzyl.vo.TreeVo;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/resource")
public class ResourceController {
    @Autowired
    private ResourceService resourceService;

    @PostMapping("/list")
    @ApiOperation("资源列表")
    @ApiImplicitParam(name = "resourceDto",value = "资源DTO",dataType = "ResourceDto")
    @ApiOperationSupport(includeParameters = {"resourceDto.resourceType","resourceDto.parentResourceNo"})
    public ResponseResult list(@RequestBody ResourceDto resourceDto){
        List<ResourceVo> list = resourceService.getlist(resourceDto);
        return ResponseResult.success(list);
    }

    @PostMapping("/tree")
    @ApiOperation("资源树形")
    @ApiImplicitParam(name = "resourceDto",value = "资源DTO",dataType = "ResourceDto")
    @ApiOperationSupport(includeParameters = {"resourceDto.lable"})
    public ResponseResult<TreeVo> resourcetree(@RequestBody ResourceDto resourceDto){
        TreeVo list = resourceService.resourcetree(resourceDto);
        return ResponseResult.success(list);

    }

    @PutMapping
    @ApiOperation(value = "资源添加", notes = "资源添加")
    @ApiImplicitParam(name = "resourceDto", value = "资源DTO对象", required = true, dataType = "ResourceDto")
    @ApiOperationSupport(includeParameters = {"resourceDto.dataState"
            , "resourceDto.icon"
            , "resourceDto.parentResourceNo"
            , "resourceDto.requestPath"
            , "resourceDto.resourceName"
            , "resourceDto.resourceType"
            , "resourceDto.sortNo"})
    public ResponseResult createResource(@RequestBody ResourceDto resourceDto){
        resourceService.createResource(resourceDto);
        return ResponseResult.success();
    }

    @PostMapping("/enable")
    @ApiOperation("启用禁用")
    @ApiImplicitParam(name = "resourceDto",value = "资源DTO",dataType = "ResourceDto")
    @ApiOperationSupport(includeParameters = {"resourceDto.dataState",
            "resourceDto.parentResourceNo",
            "resourceDto.resourceNo"})
    public ResponseResult enable(@RequestBody ResourceDto resourceDto){
        resourceService.enable(resourceDto);
        return ResponseResult.success();
    }

    @DeleteMapping("/{resourceNo}")
    @ApiOperation("删除")
    public ResponseResult delete(@PathVariable String resourceNo){
        resourceService.delete(resourceNo);
        return ResponseResult.success();
    }

    @PatchMapping
    @ApiOperation("更新")
    @ApiImplicitParam(name = "resourceDto",value = "资源DTO",dataType = "ResourceDto")
    @ApiOperationSupport(includeParameters = {"resourceDto.dataState",
            "resourceDto.icon",
            "resourceDto.parentResourceNo",
            "resourceDto.requestPath",
            "resourceDto.resourceName",
            "resourceDto.resourceType",
            "resourceDto.sortNo",
            "resourceDto.id"})
    public ResponseResult update(@RequestBody ResourceDto resourceDto){
        resourceService.update(resourceDto);
        return ResponseResult.success();
    }
}
